// @ts-nocheck

// 将日期转换为时间戳
function convertDates(req, res, next) {
    const oldSend = res.send;
    res.send = function (data) {
        // 解析响应数据
        let parsedData;
        try {
            parsedData = JSON.parse(data);
        } catch {
            oldSend.call(res, data);
            return;
        }
        // 检查数据类型
        if (typeof parsedData !== 'object' || parsedData === null) {
            oldSend.call(res, data);
            return;
        }
        // 转换日期
        const newData = convertDateInObject(parsedData);
        // 使用旧的 res.send 方法发送转换后的数据
        oldSend.call(res, JSON.stringify(newData));
    };
    next();
}
function convertDateInObject(obj) {
    if (Array.isArray(obj)) {
        return obj.map(convertDateInObject);
    }
    if (typeof obj === 'object' && obj !== null) {
        const newObj = {};
        for (const key in obj) {
            // console.log(obj[key],typeof obj[key])
            if (obj[key] instanceof Date) {
                newObj[key] = obj[key].getTime();
            } else if (typeof obj[key] === 'object' && obj[key] !== null) {
                newObj[key] = convertDateInObject(obj[key]);
            } else if (typeof obj[key] === 'string' && (obj[key].includes('-') || obj[key].includes('T')) && !isNaN(Date.parse(obj[key]))) {
                newObj[key] = new Date(obj[key]).getTime();
            } else {
                newObj[key] = obj[key];
            }
        }
        return newObj;
    }
    return obj;
}

module.exports={convertDates}